home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Scope / Scope Disk #008 (199x)(Scope PD)(US)[WB].zip / Scope Disk #008 (199x)(Scope PD)(US)[WB].adf / Asm / startup.asm < prev    next >
Assembly Source File  |  1990-12-05  |  3KB  |  139 lines

  1. ; startup-sequence
  2.      XREF _main
  3. ; Exec entries
  4. _LVOForbid        EQU -$84
  5. _LVOAllocMem      EQU -$C6
  6. _LVOFreeMem       EQU -$D2
  7. _LVOFindTask      EQU -$126
  8. _LVOSetSignal     EQU -$132
  9. _LVOGetMsg        EQU -$174
  10. _LVOReplyMsg      EQU -$17A
  11. _LVOWaitPort      EQU -$180
  12. _LVOCloseLibrary  EQU -$19E
  13. _LVOOpenLibrary   EQU -$228
  14. ; DOS entries
  15. _LVOOpen          EQU -$1E
  16. _LVOClose         EQU -$24
  17. _LVORead          EQU -$2A
  18. _LVOWrite         EQU -$30
  19. _LVOInput         EQU -$36
  20. _LVOOutput        EQU -$3C
  21. _LVOSeek          EQU -$42
  22. _LVODeleteFile    EQU -$48
  23. _LVOLock          EQU -$54
  24. _LVOUnLock        EQU -$5A
  25. _LVOCurrentDir    EQU -$7E
  26. _LVOIOErr         EQU -$84
  27. ; Intuition entries
  28. _LVOAutoRequest   EQU -$15C
  29. ; Process defs
  30. pr_MsgPort        EQU  $5C
  31. pr_CurrentDir     EQU  $98
  32. pr_ConsoleTask    EQU  $A4
  33. pr_CLI            EQU  $AC
  34. ; startup message defs
  35. sm_ToolWindow     EQU  $20
  36. sm_ArgList        EQU  $24
  37. ; workbench arg def
  38. wa_Lock           EQU  $0
  39. ; file handle definition
  40. fh_Type           EQU  $8
  41. ; cli struct defs
  42. cli_StandardInput   EQU $1C
  43. cli_StandardOutput  EQU $38
  44. ;
  45. MODE_OLDFILE      EQU  1005
  46. ;
  47.  move.l d0,d2
  48.  move.l a0,a2
  49.  lea    DosName,a1
  50.  moveq.l #0,d0
  51.  move.l $4,a6
  52.  jsr    _LVOOpenLibrary(a6)
  53.  move.l d0,_DOSBase
  54.  beq    WrapUp
  55.  sub.l  a1,a1
  56.  jsr    _LVOFindTask(a6)
  57.  move.l d0,a3
  58.  tst.l  pr_CLI(a3)
  59.  beq.s  x.workbench
  60. ; CLI startup
  61.  subq.w #1,d2
  62.  clr.b  $0(a2,d2)
  63. x.cli move.l a2,DosCmdBuf
  64.  move.b (a2)+,d0
  65.  cmp.b  #' ',d0
  66.  bne.s  x.click
  67.  subq.w #1,d2
  68.  bra.s  x.cli
  69. x.click:
  70.  move.l d2,DosCmdLen
  71.  move.l pr_CLI(a3),a0
  72.  add.l  a0,a0
  73.  add.l  a0,a0
  74.  move.l cli_StandardInput(a0),_stdin
  75.  move.l cli_StandardOutput(a0),_stdout
  76.  sub.l  a2,a2
  77.  bra    x.begin
  78. ;
  79. x.workbench:
  80.  clr.l  DosCmdBuf
  81.  lea    pr_MsgPort(a3),a0
  82.  jsr    _LVOWaitPort(a6)
  83.  lea    pr_MsgPort(a3),a0
  84.  jsr    _LVOGetMsg(a6)
  85.  move.l _DOSBase,a6
  86.  move.l d0,WBenchMsg
  87.  move.l d0,a2
  88.  tst.l  sm_ArgList(a2)
  89.  beq.s  x.parm
  90.   move.l sm_ArgList(a2),a0
  91.   move.l wa_Lock(a0),d1
  92.   jsr    _LVOCurrentDir(a6)
  93. x.parm:
  94.  tst.l  sm_ToolWindow(a2)
  95.  beq.s  x.begin
  96.   move.l sm_ToolWindow(a2),d1
  97.   move.l #MODE_OLDFILE,d2
  98.   jsr    _LVOOpen,a6
  99.   move.l d0,_stdin
  100.   move.l d0,_stdout
  101.   beq.s  x.begin
  102.    lsl.l  #2,d0
  103.    move.l d0,a0
  104.    move.l fh_Type(a0),pr_ConsoleTask(a3)
  105. x.begin:
  106.  move.l a3,a1
  107.  move.l DosCmdBuf,a0
  108.  move.l DosCmdLen,d0
  109.  move.l _DOSBase,a6
  110. ; enter with:  a0,d0 = CLI parameters (a0=0 for WorkBench)
  111. ;              a1,a2 = Process, WB message (a2=0 for CLI)
  112. ;              a6 - positioned for DOS library
  113.  jsr    _main
  114.  
  115.  tst.l  WBenchMsg
  116.  beq.s  DosWrap
  117.   move.l _stdout,d1
  118.   beq.s  DosWrap
  119.    move.l _DOSBase,a6
  120.    jsr    _LVOClose(a6)
  121. DosWrap:
  122.  move.l _DOSBase,a1
  123.  move.l $4,a6
  124.  jsr    _LVOCloseLibrary(a6)
  125.  tst.l  WBenchMsg
  126.  beq.s  WrapUp
  127.   jsr    _LVOForbid(a6)
  128.   move.l WBenchMsg,a1
  129.   jsr    _LVOReplyMsg(a6)
  130. WrapUp  rts
  131. WBenchMsg  dc.l 0
  132. _stdin     dc.l 0
  133. _stdout    dc.l 0
  134. DosName    dc.b "dos.library",0
  135.  
  136. _DOSBase   ds.l 1
  137. DosCmdLen  ds.l 1
  138. DosCmdBuf  ds.l 1
  139.